/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package negocio;

import datos.EstadoObra;
import java.util.List;
import javax.ejb.Remote;

/**
 *
 * @author Ing. Monica Merlo, Ing. Agustin  Fernandez
 */
@Remote
public interface GestorEstadoObraRemote {

      /***
     * Retorna una lista con todas las instancias de EstadoObra.
     * @return una lista con todos los posibles estados de obras almacenados en la Base de Datos, y null en caso contrario
     * Interfaz remota
     */
    public List consultarEstadoObraRemote();

     /***
     * Retorna una lista con los nombres de todas las instancias de EstadoObra.
     * @return una lista con todos los nombres de los estados de obra ordenas y null en caso contrario
     * Interfaz remota
     */
    public List estadosObraRemote();

     /***
     * Retorna una instancia de tipo EstadoObra cuyo nombre coincida con el parametro nombre.
     * @param nombre
     * @return el estado de obra cuyo nombre es igual al pasado como parámetro, y null en caso contrario
     * Interfaz remota
     */
    public EstadoObra encontrarEstadoObraRemote(String nombre);

     /***
      * Agrega una nueva instancia EstadoObra en la base de datos.
      * @param estadoObra
      * @return true en caso de que la nueva instancia de EstadoObra sea almacenada con éxito en la Base de Datos y
      * false en caso contrario
      * Interfaz remota
      */
    public boolean agregarEstadoObraRemote(EstadoObra estadoObra);

    /***
     * Busca y Actualiza una instancia de EstadoObra en la base de datos. Retorna True en
     * caso de exito y False en caso contrario.
     * @param estadoObra
     * @return true en caso de que el objeto estadoObra sea almacenado en la Base de Datos exitosamente
     * y false en caso contrario
     * Interfaz remota
     */
    public boolean modificarEstadoObraRemote(EstadoObra estadoObra);

     /***
     * Busca y elimina una instancia de EstadoObra de la base de datos. Retorna True en
     * caso de exito y False en caso contrario.
     * @param estadoObra
     * @return true en caso de que el objeto estadoObra haya sido encontrado por su ID y eliminado físicamente
     * de la Base de Datos y false en caso contrario
     * Interfaz remota
     */

    public boolean eliminarEstadoObraRemote(EstadoObra estadoObra);

      /***
     * Valida si existe alguna instancia de EstadoObra con un nombre particular.
     * Retornando True en caso de que exista y False en caso contrario.
     * @param estadoObra
     * @return true si el objeto estadoObra se encuentra almacenado en la Base de datos con un nombre particular
     * y false en caso contrario
     * Interfaz remota
      */
    public boolean existeNombreEstadoObraRemote(EstadoObra estadoObra);

     /***
     * Valida si ya existe alguna instancia de EstadoObra en la base de datos con un nombre
     * igual al que se le quiere actualizar, retornando True en caso de exito y False en caso contario.
     * @param estadoObra
     * @return true en el caso de que exista algún objeto estadoObra almacenado en la BD que coincida con el nombre especificado
     * y false en caso contrario
     * Interfaz remota
     */
    public boolean existeNombreEstadoObraModificarRemote(EstadoObra estadoObra);

     /***
     * Valida si existe alguna instancia de EstadoObra con id igual al parametro idEstadoObra
     * asignado a alguna instancia de Obra.
     * @param idEstadoObra
     * @return true en caso de que exista un estado de obra con ID igual a idEstadoObra asignado a alguna obra
     * y false en caso contrario
     * Interfaz remota
     */
    public boolean estadoObraFueAsignadoObrasRemote(int idEstadoObra);
}
